[GAME-2] Acerte os rortões nas janelas (jogo com gráficos)
Publicado por Samuel Leonardo 26/11/2008
[ Hits: 5.999 ]
Homepage: https://nerdki.blogspot.com.br/
Download [GAME2]Acerte o Portões na Janela.tar.gz
Meu segundo script, um jogo simples que mostra como funciona a colisão nos jogos e como simular o tiro de um canhão.
É bem legal, vocês devem conferir!
Acompanha uma versão pré-compilada.
ATENÇÃO: É necessário antes ter os arquivos de desenvolvimento da libSDL instalados.
Para compilar: gcc -o game game.c -lSDL
Para rodar: ./game
/*
#
#
###desenvolvido por: Samuel Leonardo (Sam L.) EM 20/11/2008
#######Historico de desenvolvimento:
####### A idéia de fazer esse 'game' surgiu por falta do que fazer. :P
###########
############# ATENÇÃO -> USUÁRIOS DE WINDOWS, NÃO SE OFENDAM PELO QUE FIZ COM O
############# LOGO E O DESKTOP DESTE "escelêntiçimo e pherFEItiçimo çixtema" operacional,
############# ACONTECE QUE NÃO CONSEGUI RESISTIR A FAZER UMA PIADA. hehe!!! bricadeira!!!
#######
#
#
########BAIXE UM EXECELENTE APOSTILA SOBRE DESENVOLVIMENTO DE JOGOS COM SDL AQUI:#########
## http://silveira.wordpress.com/2006/09/21/apostila-de-desenvolvimento-de-jogos/ #
#################################################################
*/
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
int Colisao(SDL_Rect *a, SDL_Rect *b)
{
return (!((a->x > b->x + b->w)||(a->x + a->w < b->x)||(a->y > b->y + b->h)||(a->y + a->h < b->y)));
}
int main(int argc, char *argv[])
{
SDL_Init(SDL_INIT_VIDEO);
SDL_Surface *screen, *bala, *alvo[2], *efeito, *cannon, *obstaculo[2];
SDL_Rect destino,fonte[2], posicao;
screen = SDL_SetVideoMode(800, 350, 0, SDL_SWSURFACE | SDL_HWSURFACE | SDL_ANYFORMAT);
bala = SDL_LoadBMP("Imagens/cabeca.bmp");
alvo[0] = SDL_LoadBMP("Imagens/monitor.bmp");
alvo[1] = SDL_LoadBMP("Imagens/windows-vista-logo.bmp");
efeito = SDL_LoadBMP("Imagens/fumaca.bmp");
cannon = SDL_LoadBMP("Imagens/tux-canhao.bmp");
SDL_SetColorKey(cannon, SDL_SRCCOLORKEY|SDL_RLEACCEL, SDL_MapRGB(cannon->format, 255, 255, 255));
destino = (SDL_Rect){40,240,20,20};//posição da bala
fonte[0] = (SDL_Rect){600, 240,40,40};//posição do XP, obstaculo[0]
fonte[1] = (SDL_Rect){700, 240,40,40};//posição do VISTA, obstaculo[1]
posicao = (SDL_Rect){0,220,0,0}; //posição do canhão
int fim = 0, i;
// a bala tem aceleração e velocidade
int velo = 0, acel = 1, atira = 0, acres_y = 4;
SDL_Event evento;
while(!fim)
{
Uint8 *teclado;
SDL_PumpEvents();
teclado = SDL_GetKeyState(0);
if(teclado[SDLK_ESCAPE]) fim = 1;
if(teclado[SDLK_UP] && !atira)
{
posicao.y -= 10;
destino.y = posicao.y + 20;
}
if(teclado[SDLK_DOWN] && !atira)
{
posicao.y += 10;
destino.y = posicao.y + 20;
}
while(SDL_PollEvent(&evento)) if(evento.type == SDL_QUIT) fim =1;
if(!atira)
{
if(teclado[SDLK_SPACE])
{
velo = 10;
atira = 1;
}
}
if(atira)
{
velo = velo - acel;
destino.y -= velo;
destino.x += 30;
for(i=0; i < 2;i++)
if(Colisao(&destino,&fonte[i]))
{
SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format,255,255,255));
atira = 0;
destino.x = 40;
destino.y = posicao.y + 20;
SDL_BlitSurface(efeito, NULL, screen, &fonte[i]);
SDL_Flip(screen);
SDL_Delay(1500);
}
}
if(destino.x > 700)
{
atira = 0;
destino.x = 40;
destino.y = posicao.y + 20;
}
if((fonte[0].y + fonte[0].h + acres_y > 350) || (fonte[0].y + acres_y < 0))
acres_y = -acres_y;
fonte[0].y += acres_y;
SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format,255,255,255));
SDL_BlitSurface(bala, NULL, screen, &destino);
SDL_BlitSurface(alvo[0], NULL, screen, &fonte[0]);
SDL_BlitSurface(alvo[1], NULL, screen, &fonte[1]);
SDL_BlitSurface(cannon, NULL, screen, &posicao);
SDL_Flip(screen);
SDL_Delay(60);
}
SDL_Quit();
return 0;
}
Funções com número variável de argumentos
Fibbonacci com Memoization - O(n)
Nenhum comentário foi encontrado.
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
É normal não gostar de KDE? (9)
Linux é a solução para o fim do Windows10? (2)
Problemas com Driver NVIDIA (4)









